<!doctype html>
<html>

<body>
  <script src="/resources/get-host-info.js?pipe=sub"></script>
  <script src="/resources/testharness.js"></script>
  <script src="/resources/testharnessreport.js"></script>
  <script src="/serviceworker/resources/test-helpers.js"></script>
  <script src="/fetch/resources/fetch-test-helpers.js"></script>
  <script src="/fetch/resources/fetch-test-options.js"></script>
  <script>
    const SCRIPT =
      '/fetch/referrer/resources/origin-when-cross-origin-simple-onfetch-js.php';
    const SCOPE = location.href;

    const {
      BASE_ORIGIN,
      OTHER_ORIGIN
    } = get_fetch_test_options();
    const BASE_URL = BASE_ORIGIN + '/fetch/resources/referrer.php';
    const OTHER_URL = OTHER_ORIGIN + '/fetch/resources/referrer.php';
    const REFERRER_SOURCE = location.href;

    promise_test(t => {
      return navigator.serviceWorker.register(SCRIPT, {
        scope: SCOPE
      }).then(r => {
        return r.ready;
      }).then(() => {
        if (navigator.serviceWorker.controller === null) {
          location.reload();
        }
      });
    });

    const TESTS = [
      [BASE_URL, 'about:client', '', REFERRER_SOURCE],
      [BASE_URL, 'about:client', 'no-referrer', '[no-referrer]'],
      [BASE_URL, 'about:client', 'no-referrer-when-downgrade', REFERRER_SOURCE],
      [BASE_URL, 'about:client', 'origin', BASE_ORIGIN + '/'],
      [BASE_URL, 'about:client', 'origin-when-cross-origin', REFERRER_SOURCE],
      [BASE_URL, 'about:client', 'unsafe-url', REFERRER_SOURCE],
      [OTHER_URL, 'about:client', '', BASE_ORIGIN + '/'],
      [OTHER_URL, 'about:client', 'no-referrer', '[no-referrer]'],
      [OTHER_URL, 'about:client', 'no-referrer-when-downgrade', REFERRER_SOURCE],
      [OTHER_URL, 'about:client', 'origin', BASE_ORIGIN + '/'],
      [OTHER_URL, 'about:client', 'origin-when-cross-origin', BASE_ORIGIN + '/'],
      [OTHER_URL, 'about:client', 'strict-origin-when-cross-origin', BASE_ORIGIN + '/'],
      [OTHER_URL, 'about:client', 'unsafe-url', REFERRER_SOURCE],

      [BASE_URL, '', '', '[no-referrer]'],
      [BASE_URL, '', 'no-referrer', '[no-referrer]'],
      [BASE_URL, '', 'no-referrer-when-downgrade', '[no-referrer]'],
      [BASE_URL, '', 'origin', '[no-referrer]'],
      [BASE_URL, '', 'origin-when-cross-origin', '[no-referrer]'],
      [BASE_URL, '', 'unsafe-url', '[no-referrer]'],
      [OTHER_URL, '', '', '[no-referrer]'],
      [OTHER_URL, '', 'no-referrer', '[no-referrer]'],
      [OTHER_URL, '', 'no-referrer-when-downgrade', '[no-referrer]'],
      [OTHER_URL, '', 'origin', '[no-referrer]'],
      [OTHER_URL, '', 'origin-when-cross-origin', '[no-referrer]'],
      [OTHER_URL, '', 'unsafe-url', '[no-referrer]'],

      [BASE_URL, '/foo', '', BASE_ORIGIN + '/foo'],
      [BASE_URL, '/foo', 'no-referrer', '[no-referrer]'],
      [BASE_URL, '/foo', 'no-referrer-when-downgrade', BASE_ORIGIN + '/foo'],
      [BASE_URL, '/foo', 'origin', BASE_ORIGIN + '/'],
      [BASE_URL, '/foo', 'origin-when-cross-origin', BASE_ORIGIN + '/foo'],
      [BASE_URL, '/foo', 'unsafe-url', BASE_ORIGIN + '/foo'],
      [OTHER_URL, '/foo', '', BASE_ORIGIN + '/'],
      [OTHER_URL, '/foo', 'no-referrer', '[no-referrer]'],
      [OTHER_URL, '/foo', 'no-referrer-when-downgrade', BASE_ORIGIN + '/foo'],
      [OTHER_URL, '/foo', 'origin', BASE_ORIGIN + '/'],
      [OTHER_URL, '/foo', 'origin-when-cross-origin', BASE_ORIGIN + '/'],
      [OTHER_URL, '/foo', 'strict-origin-when-cross-origin', BASE_ORIGIN + '/'],
      [OTHER_URL, '/foo', 'unsafe-url', BASE_ORIGIN + '/foo'],
    ];

    add_referrer_tests(TESTS);
    done();
  </script>
</body>

</html>
